package com.edu.exam.enums.grading;

import com.edu.exam.enums.core.BaseEnum;

import java.util.Arrays;

/**
 * 数据完整性枚举
 *
 * 用于标识批阅统计数据的完整程度，支持多种数据完整性的状态分类
 *
 * @author System
 * @version 1.0.0
 */
public enum DataCompleteness implements BaseEnum {

    /**
     * 完整 - 数据完全完整，所有必要字段都已填写
     */
    COMPLETE("COMPLETE", "完整"),

    /**
     * 部分 - 数据部分完整，主要字段已填写但缺少一些可选字段
     */
    PARTIAL("PARTIAL", "部分"),

    /**
     * 不完整 - 数据不完整，缺少重要的必要字段
     */
    INCOMPLETE("INCOMPLETE", "不完整"),

    /**
     * 未知 - 数据完整性未知，尚未进行完整性检查
     */
    UNKNOWN("UNKNOWN", "未知");

    private final String code;
    private final String description;

    DataCompleteness(String code, String description) {
        this.code = code;
        this.description = description;
    }

    @Override
    public String getCode() {
        return code;
    }

    @Override
    public String getDescription() {
        return description;
    }

    /**
     * 根据编码获取枚举
     */
    public static DataCompleteness fromCode(String code) {
        return Arrays.stream(values())
                .filter(e -> e.code.equals(code))
                .findFirst()
                .orElseThrow(() -> new IllegalArgumentException("Unknown data completeness code: " + code));
    }

    /**
     * 根据描述获取枚举
     */

    @Override
    public String toString() {
        return description;
    }
}